package com.ybc.future;

import java.util.concurrent.*;

public class FutureExample {

    public static void main(String[] args) throws Exception {
        // 创建线程池
        ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(2);


        //打印他的类型
        System.out.println(executor.getClass());

        // 提交一个异步任务，返回 Future 对象
        FutureTask<String> future = (FutureTask<String>) executor.submit(() -> {
            System.out.println("任务开始，执行耗时操作...");
            Thread.sleep(2000); // 模拟耗时操作
            return "任务完成的结果";
        });

        //future类型
        System.out.println(future.getClass());

        System.out.println("主线程继续执行...");

        // 等待异步任务完成并获取结果（阻塞）
        String result = future.get(); // 可以改成 future.get(1, TimeUnit.SECONDS) 设置超时
        System.out.println("异步任务返回结果：" + result);

        // 关闭线程池
        executor.shutdown();
    }
}
